package edu.ycu.aladdin.collector.api.entity;

import lombok.Data;
import org.springframework.util.CollectionUtils;

import java.util.Queue;
import java.util.UUID;

/**
 * 基础爬虫任务数据.
 *
 * @author <a href="mailto:wangruihuano@gmail.com">王瑞环</a>
 * @since 2019-04-06 00:45
 */
@Data
public abstract class BaseCrawlerTaskQueue<ID, TASK_TYPE> {

    /**
     * 任务id
     */
    protected String id;

    /**
     * 任务创建时间
     */
    private Long createTime;

    /**
     * 开始执行时间
     */
    private Long executionTime;

    /**
     * 完成时间
     */
    private Long finishTime;

    public final String getId() {
        return id;
    }

    protected BaseCrawlerTaskQueue() {
        this.id = UUID.randomUUID().toString();
    }

    /**
     * 获取任务队列
     *
     * @return
     */
    public abstract Queue<TASK_TYPE> getTaskQueue();

    public abstract TASK_TYPE pollOne();

    public boolean isEmpty() {
        return CollectionUtils.isEmpty(getTaskQueue());
    }
}
